package main.矩阵;

/**
 * @author tmh
 * @date 2024/7/19 14:55
 * @description
 */
public class T240搜索二维矩阵II {


    /**
     * 使用二分来对每一行来进行操作
     *
     * @param matrix
     * @param target
     * @return
     */
    public boolean searchMatrix(int[][] matrix, int target) {
        //得到行
        int m = matrix.length;
        int n = matrix[0].length;
        for (int i = 0; i < m; i++) {
            int l = 0, r = n - 1;
            while (l < r) {
                //用这个方式来取中间值，可以避免无限循环的情况
                int mid = l + r + 1 >> 1;
                if (matrix[i][mid] <= target) {
                    l = mid;
                } else {
                    r = mid - 1;
                }
            }
            //这里返回的是matrix[i][r],循环结束之后r指向的就是我们期望的位置
            if (matrix[i][r] == target) {
                return true;
            }
        }
        return false;
    }
}
